# ----------------------------
# Stepfield Generator 4 blender
# V 1.0
# Dietmar Schreiner
# ----------------------------

import bpy
from bpy.props import FloatVectorProperty
from add_utils import AddObjectHelper, add_object_data
from mathutils import Vector


# ============================
# Stepfield Data:
# 24x22

stepfield = [
    [1,1,1,1,2,2,3,3,4,4,4,4,4,4,4,4,3,3,2,2,1,1,1,1],
    [1,1,1,1,2,2,3,3,4,4,4,4,4,4,4,4,3,3,2,2,1,1,1,1],
    [1,1,1,1,2,2,3,3,4,4,5,5,5,5,4,4,3,3,2,2,1,1,1,1],
    [1,1,1,1,2,2,3,3,4,4,5,10,10,5,4,4,3,3,2,2,1,1,1,1],
    [1,1,1,1,2,2,3,3,4,4,5,10,10,5,4,4,3,3,2,2,1,1,1,1],
    [1,1,1,1,2,2,3,3,4,4,5,5,5,5,4,4,3,3,2,2,1,1,1,1],
    [1,1,2,2,3,3,4,4,5,5,4,4,4,4,5,5,4,4,3,3,2,2,1,1],
    [1,1,2,2,3,3,4,4,5,5,4,4,4,4,5,5,4,4,3,3,2,2,1,1],
    [2,2,3,3,4,4,5,5,4,4,3,3,3,3,4,4,5,5,4,4,3,3,2,2],
    [2,2,3,3,4,4,5,5,4,4,3,3,3,3,4,4,5,5,4,4,3,3,2,2],
    [3,3,4,4,5,5,4,4,3,3,2,2,2,2,3,3,4,4,5,5,4,4,3,3],
    [3,3,4,4,5,5,4,4,3,3,2,2,2,2,3,3,4,4,5,5,4,4,3,3],
    [4,4,5,5,4,4,3,3,2,2,1,1,1,1,2,2,3,3,4,4,5,5,4,4],
    [4,4,5,5,4,4,3,3,2,2,1,1,1,1,2,2,3,3,4,4,5,5,4,4],
    [5,5,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5],
    [5,5,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5],
    [5,5,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5],
    [5,5,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5],
    [4,4,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,4,4],
    [4,4,4,4,3,3,2,2,1,1,1,1,1,1,1,1,2,2,3,3,4,4,4,4],
    [3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3],
    [3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3]
]

# ----------------------------

stepfield_cube_size = 1
stepfield_depth = len(stepfield)
stepfield_width = len(stepfield[0])

stepfield_wood = bpy.data.materials.new('wood material')
stepfield_wood.diffuse_color = 0.4, 0.3, 0.0
    
# ============================


for x in range(0,stepfield_depth):
        current_x = ( x + ( 0 - stepfield_depth/2 ) ) * stepfield_cube_size
        for y in range(0,stepfield_width):
                print("Creating Cube ",x,y)
                current_y = ( y + ( 0 - stepfield_width/2 ) ) * stepfield_cube_size
                current_height = stepfield[x][y]
            
                # create box
                bpy.ops.mesh.primitive_cube_add(location=(current_x,current_y, current_height/2))
                currentObject = bpy.context.object
                currentObject.scale=(stepfield_cube_size/2, stepfield_cube_size/2, current_height/2)
                mesh = currentObject.data
                mesh.materials.append(stepfield_wood)
        